﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EntidadesDeNegocio;
using Utiles.Observer;

namespace ObliDisenoAplicaciones.Interfaz
{
    public partial class HistoricoDeProducciones : Form, IObservador
    {
        public delegate void CargarGrillaDelegate(object obj);
        public HistoricoDeProducciones()
        {
            InitializeComponent();
            FormClosing += new FormClosingEventHandler(Historico_FormClosing);
            Sistema.Instancia.AgregarObservador(this);
            CargoGrilla(null);
        }

        /// <summary>
        /// Desregistra el obervador
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Historico_FormClosing(object sender, FormClosingEventArgs e)
        {
            Sistema.Instancia.EliminarObservador(this);
        }

        private void CargoGrilla(object obj)
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new CargarGrillaDelegate(this.CargoGrilla), obj);

            }
            else
            {
                this.dgvHistoricoProducciones.AutoGenerateColumns = false;
                this.dgvHistoricoProducciones.Rows.Clear();
                int row = 0;
                foreach (HistoricoProduccion hist in Sistema.Instancia.ListaHistoricoProducciones)
                {
                    dgvHistoricoProducciones.Rows.Add();
                    dgvHistoricoProducciones.Rows[row].Cells["Produccion"].Value = hist.Produccion.Oid;
                    dgvHistoricoProducciones.Rows[row].Cells["Diseno"].Value = hist.Produccion.DisenoProduccion.Nombre;
                    dgvHistoricoProducciones.Rows[row].Cells["Componente"].Value = hist.Componente.Modelo;
                    dgvHistoricoProducciones.Rows[row].Cells["StockInicial"].Value = hist.StockInicial;
                    dgvHistoricoProducciones.Rows[row].Cells["StockFinal"].Value = hist.StockFinal;
                    dgvHistoricoProducciones.Rows[row].Cells["FechaProduccion"].Value = hist.Produccion.FechaFinProduccion;
                    row = row + 1;                   
                }
                this.dgvHistoricoProducciones.Refresh();
            }
        }

        /// <summary>
        /// Metodo actualizar de IObservador
        /// </summary>
        /// <param name="obj"></param>
        public void Actualizar(Observable obj)
        {
            CargoGrilla(null);
        }


    }
}
